今天我們要來介紹Monolithic與Microservices的差別,在這個很多東西都上雲的時代,我們也是要來了解一下Monolithic代表著甚麼?
是將所有功能和組件都整合到一個應用程式裡面,如果裡面有一個資料庫,那就會是全部組件都共用這個資料庫。這種設計的好處是初期開發相對簡單,部署起來也較為方便,因為只需要管理一個應用程式。但是,隨著應用程式不斷增大,維護和擴展會變得越來越困難。任何小的變動都可能影響整體的運作,開發團隊之間的合作也會變得很複雜。
是將應用程式拆分成多個小型、獨立的服務,每個服務負責特定功能,並能夠各自開發、部署和擴展。我們常聽到的K8S,就是屬於microservices的一環。
這種架構的優勢在於靈活性,讓開發團隊可以針對特定的服務進行調整或擴展,而不會影響整體系統。另外,Microservices還允許使用不同技術來解決不同的問題,例如我可以A功能使用kotlin開發,B功能使用typescript開發,這是可行的! 因為對部屬來說,它就是各自的應用程式,互相沒有關係。
但缺點是管理和合作變得更複雜,尤其是各服務間的通信、監控和故障排除等,例如A功能需要B功能的資料,如果這時候B功能因為升級版本壞掉了,A功能也會跟著壞掉,如果是Monolithic就不會有這問題,因為B功能壞掉你就不會升版了XD
使用Microservices或是Monolithic都各自有好處,當然上雲後我們適當的管理得到的優勢是很大的,現在有很多工具可以幫助我們偵錯,只要架好k8s等工具,我們就可以方便的得到Microservices的好處了,而Monolithic可以用在小型或中型應用,初期開發也可以用,來快速上線和驗證概念,開發和部署更為簡單。
https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith